import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { APP_FILTER, APP_INTERCEPTOR } from '@nestjs/core';
import { TypeOrmModule } from '@nestjs/typeorm';

import configuration from './config/configuration';
import { databaseConfig } from './config/database.config';
import { HttpExceptionFilter } from './shared/filters/http-exception.filter';
import { TransformInterceptor } from './shared/interceptors/transform.interceptor';
import { UsersModule } from './modules/users/users.module';
import { ProductsModule } from './modules/products/products.module';

/**
 * 应用根模块
 * 
 * NestJS应用的主要模块，负责组织应用的各个部分
 * 包含控制器、提供者（服务）和导入的其他模块
 */
@Module({
  imports: [
    // 配置模块，使应用配置可注入
    ConfigModule.forRoot({
      isGlobal: true,
      load: [configuration],
    }),
    // TypeORM数据库模块
    TypeOrmModule.forRoot(databaseConfig()),
    // 功能模块
    UsersModule,
    ProductsModule,
  ],
  controllers: [], // 不再直接使用AppController，由各个模块提供控制器
  providers: [
    // 全局异常过滤器
    {
      provide: APP_FILTER,
      useClass: HttpExceptionFilter,
    },
    // 全局响应转换拦截器
    {
      provide: APP_INTERCEPTOR,
      useClass: TransformInterceptor,
    },
  ],
})
export class AppModule {}
